//
//  DMWKWebView.swift
//  DigitalMuseum
//
//  Created by zhongshan on 2024/2/22.
//

import UIKit
import WebKit

@objc
protocol DMWKWebViewDelegate: WKNavigationDelegate {
    /**
     WebView接收到JS方法的回调处理
     
     @param handleName JS方法名称
     @param data JS传递给iOS原生的数据
     @param callBack 回调给JS
     */
    @objc optional func fetchHandle(_ handleName: String, data: [String: Any], callBack: WVJBResponseCallback)
    
    /// 是否允许页面进行加载
    @objc optional func webView(_ webView: WKWebView, decidePolicyForNavigationAction navigationAction: WKNavigationAction) -> Bool
    
    /// 加载完成
    @objc optional func webViewDidFinishFirstLoad(_ webView: DMWKWebView)
    
    /// 显示错误页面
    @objc optional func didShowFailedView()
    
    /// 点击错误页面重试
    @objc optional func didTouchFailedView()
}

class DMWKWebView: UIView {
    
    var bridge: HNTVWKWebViewJavascriptBridge?
    weak var delegate: (any DMWKWebViewDelegate)?
    
    private(set) var webView: WKWebView?
    
    /// WebView加载地址
    var webViewUrlStr: String?
    
    /// 存储JS调用原生传入的分享内容
    var shareInfo: [String: Any]?
    //购买返回是否需要拦截配置
    var clickBackConfig: [String: Any]?
    
    var jsStayParams: [String: Any]?
    
    /// JS回调回来的上报参数
    var stayParams: [String: Any]?
    
    /// 是否需要背景透明
    var bgClearColor: Bool = false
    
    /// 只能用于检测是否失败，网页并不一定加载完成
    var firstLoadFinished: Bool = false
    
    /// 当前正在加载的url 页面加载失败时可能用到 部分场景下加载失败取不到url
    var currentURL: URL?
    
    
    
}
